package com.kwan.xframe.api;


import com.kwan.xframe.mvvm.data.source.http.HttpResult;

import java.util.Map;

import io.reactivex.rxjava3.core.Flowable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * 服务器 网络 http 接口
 * Created by Mr.Kwan on 2016-6-28.
 */
public interface BaseServerAPI {


	/**
	 * 单线程下载
	 * @param url
	 * @return
	 */

	@Streaming
	@GET
	Flowable<ResponseBody> download(@Url String url);
	int DOWN_LOAD_VOCATIONAL_ID = 0x000000;


	/**
	 *  断点下载
	 *  Streaming 大文件需要加入这个判断，防止下载过程中写入到内存中
     *  GET 方法
     */
	@Streaming
	@GET
	Flowable<ResponseBody> download(@Header("RANGE") String start, @Url String url);
	int RANGE_DOWN_LOAD_VOCATIONAL_ID = 0x000001;
	int RANGE_DOWN_LOAD_LENTH_VOCATIONAL_ID = 0x000002;


	/**
	 *
	 * @param url 上传地址
	 * @param partMap 上传的参数
	 * @param file 文件
	 * @return
	 */

	@Multipart
	@POST
	Flowable<HttpResult<Object>> uploadFile(@Url() String url, @PartMap() Map<String, RequestBody> partMap,
											@Part("file") MultipartBody.Part file);

}
